// 鉴权 路由守卫

import router from "./router";
// 更具token来执行鉴权
import store from './store'
// 引入进度条插件
import Nprogress from 'nprogress'
// 引入进度条样式
import 'nprogress/nprogress.css'

// 定义白名单
const whiteList = ['/login','/404']

// 全局前置钩子
router.beforeEach(async function(to, from, next){
    // 进度条
    Nprogress.start()
    // 判断是否有token
    if(store.getters.token){
        // 有token 继续判断是不是去登录页面
        if(to.path === '/login'){
            // 是就跳转首页
            next('/')
        }else{
            // // 不是去登录页面 直接放行 如进去系统后 一些功能展示时的路由切换
            // next()
            // 调用用户信息的action方法
            if (!store.state.user.userInfo.userId) {
                await store.dispatch('user/getUserInfo')
            }
            next()
        }
    }else{
        // 没有token
        // 判断是否在白名单中
        if(whiteList.includes(to.path) > -1){
            // 存在于白名单
            next()
        }
        else{
            // 否则跳到登录页面
            next('/login')
        }
    }
    Nprogress.done()
})

// 全局后置钩子
router.afterEach(function(to, from){
    Nprogress.done()
})